﻿using Admin.Crypto.Dto;
using Admin.Crypto.Utils;

namespace Admin.Crypto
{
    /// <summary>
    /// 客户联系数据接口
    /// </summary>
    public interface ICustomerContactAppService
    {
        /// <summary>
        /// 创建加密的联系数据
        /// </summary>
        /// <param name="input">待加密数据</param>
        /// <returns></returns>
        Task<ResultOutput<EncryptionOutput>> CreateAsync(string input);

        /// <summary>
        /// 创建加密的联系数据集合
        /// </summary>
        /// <param name="input">待加密数据集合</param>
        /// <returns></returns>
        Task<ResultOutput<List<EncryptionOutput>>> CreateListAsync(CreateListInput input);

        /// <summary>
        /// 解密联系数据
        /// </summary>
        /// <param name="input">待解密唯一id</param>
        /// <returns></returns>
        Task<ResultOutput<DecryptionOutput>> DecryptAsync(string input);

        /// <summary>
        /// 解密联系数据集合
        /// </summary>
        /// <param name="input">待解密id集合</param>
        /// <returns></returns>
        Task<ResultOutput<List<DecryptionOutput>>> DecryptListAsync(DecipherListInput input);

        /// <summary>
        /// 根据联系数据获取唯一ID
        /// </summary>
        /// <param name="input">联系数据</param>
        /// <returns></returns>
        Task<ResultOutput<Guid>> GetIdAsync(string input);

        /// <summary>
        /// 根据联系数据集合获取唯一ID集合
        /// </summary>
        /// <param name="input">联系数据集合</param>
        /// <returns></returns>
        Task<ResultOutput<List<IdListOutput>>> GetIdListAsync(GetIdsInput input);
    }
}
